<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 单例模式 

        // 核心  一个类只能实例一个对象  
        // 一个构造函数只能有一个实例 
        // 如何保证只有一个实例?
        // 如果创建完了一个 就不再创建了 

        // 也就是说 只要new 就会创建一个新的实例
        // 一生只能执行一遍 new


        function Person(name){
            this.name = name;
        }
        let instance = null; // 准备一个变量 初始值定为null  空 
        function singleten(username){
            // 判断 只要 new 过  就不再new  没有new 创建一个 
            if(instance == null){
                instance = new Person(username)
            }
            return instance
        }

        // 第一次  
        // instance = null
        // 条件为true   
        // 创建一个实例 给到  instance
        // 把这个实例返回   

        const p1 = singleten('张三');
        // p1 就是Person的一个实例 

        console.log(p1);

        // instance 里边是一个实例 
        // 条件是false   
        // 把instance 返回给到了  p2  

        // p2 得到本次的instance 实际上就是第一次创建的那个实例 
        const p2 = singleten('李四');
        console.log(p2);

        console.log(p1 === p2);



        

    </script>
</body>
</html>